package jheej5024;

public class J24_Inheritance {

	//클래스 확장하기
	//OOP에서 상속은 매우 중요한 기능임
	//상속을 이용해서 기존코드를 확장시켜 클래스를 만들수 있음
	
	//기존 클래스를 확장시켜 새로운 클래스를 만드는경우
	//원래 클래스를 부모, 기본base 클래스라 하고
	//새로운 클래스를 자식,하위sub 클래서라 함
	//기본 클래스를 확장하는 행위는 크게 2가지로 나뉨
	//기본 클래스에 없는 새로운 멤버, 메서드를 추가하거나
	//기본 클래스에 이미 있는 메서드를 무시하고 새롭게 메서드를 재작성함
	
	
	//클래스 확장시 extends 라는 예약어 사용
	
	//한편, 기본 클래스를 확장하여
	//새로운 클래스를 확장하는 경우 
	//형성되는 특수한 관계는 is-a임
	//예를 들어, Animal 이라는 클래스는
	//Fish,Tiger,Bug 등의 부모 클래스임
	//따라서, Fish is Animal, Tiger is Animal, Bug is Animal 처럼 is-a 관계 성립
	
	//메서드 재정의 override
	//클래스 확장시, 부모 클래스의
	//메서드 동작을 자식 클래스에서 변경할 수 있음
	//단, final로 선언된 메서드는 재정의 불가
	
	
	public static void main (String[] args) {
	
	J24_ParentClass pc = new J24_ParentClass();
	pc.showMeTheMoney();
	J24_ChildClass cc = new J24_ChildClass();
    pc.showMeTheMoney();
    
    J25_Fish f=new J25_Fish();
    f.eat();
    
    
    
    
    
 }

}
